﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using IndignadoFramework.BackBone.InternalServices;
using IndignadoFramework.BackBone.Model;
using IndignadoFramework.BackBone.InternalServices.Implementacion;


namespace IndignadoFramework.PhoneServices
{
    // NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
    public class PhoneServices : IPhoneServices
    {
        private ConvocatoriaServices _convocatorias;
        private UsuarioServices _usuarios;

        public PhoneServices() : this (new ConvocatoriaServicesImpl(), new UsuarioServicesImpl()) { }

        public PhoneServices(ConvocatoriaServices conv, UsuarioServices usu)
        {
            _convocatorias = conv;
            _usuarios = usu;
        }

        public List<ConvocatoriaPhone> ListarConvocatorias(String userId)
        {
            //_convocatorias = new ConvocatoriaServicesImpl();
            //IndignadoFramework.List<ConvocatoriaModel> convocatoriasResult = new List<ConvocatoriaModel>();
            //IQueryable<Convocatoria> convocatorias =
            //    from conv in context.Convocatorias
            //    select conv;
            //if (convocatorias.Count()==0){
            //    Convocatoria c = new Convocatoria();
            //    c.ConvocatoriaTitulo = "Comela";
            //    convocatoriasResult.Add(c);
            //}
            //foreach (Convocatoria c in convocatorias)
            //{
            //    Convocatoria convocatoria = new Convocatoria();
            //    convocatoria.ConvocatoriaTitulo = c.ConvocatoriaTitulo+"sss";
            //    convocatoriasResult.Add(convocatoria);
            //}
            
            List<ConvocatoriaModel> convocatoriasModel = _convocatorias.listarTodasConvocatoriasPhone();
            List<ConvocatoriaPhone> convocatoriasPhone = new List<ConvocatoriaPhone>();
            
            //ConvocatoriaPhone phone1 = new ConvocatoriaPhone(1, "ssssss");
            //convocatoriasPhone.Add(phone1);
            foreach (ConvocatoriaModel model in convocatoriasModel)
            {
                ConvocatoriaPhone phone = new ConvocatoriaPhone(model.Id, model.ConvocatoriaTitulo, model.ConvocatoriaFechaInicio,
                                                model.ConvocatoriaFechaFin, model.ConvocatoriaDetalle, 
                                                model.ConvocatoriaUbicacionX, model.ConvocatoriaUbicacionY);
                convocatoriasPhone.Add(phone);
            }
            //IEnumerable<ConvocatoriaModel> convocatoriasModel = _convocatorias.listarConvocatorias(1);
            //Convocatoria c = new Convocatoria();
            //c.ConvocatoriaTitulo = convocatoriasModel.First().ConvocatoriaTitulo + "sdds";
            //convocatorias.Add(c);
            return convocatoriasPhone;
        }

        public void AsistirConvocatoria(Nullable<long> facebookID, ConvocatoriaPhone convocatoria)
        {
            ConvocatoriaModel conv = _convocatorias.getConvocatoria(convocatoria.Id);
            _usuarios.asistirConvocatoriaUsuarioPhone(facebookID, conv);
        }
    }
}
